#pragma once
#include <opencv2/opencv.hpp>
#include<vector>
constexpr auto RED = 1;
constexpr auto BLUE = 0;
using namespace std;
class armorDetect
{
private:
    bool _is_recorded; //是否写入视频
    int _color; //灯条颜色
    bool _is_continuous; //是否连续播放
    cv::VideoWriter writer; //写入视频对象

    /**
     * @brief 画出装甲板中心的预测点
     * 
     * @param src 视频帧的地址
     * @param target 装甲板中心点
     * @param target_saved 若干个帧数画面中心点的保存数组
     */
    void target_predict(cv::Mat &src, cv::Point2f target, vector<cv::Point2f> &target_saved);

public:
/**
 * @brief Construct a new armor Detect object
 * 
 */
    armorDetect();

/**
 * @brief 写入视频判断参数设置
 * 
 * @param is_recorded 写入视频判断参数，true为写入视频并保存至build文件夹
 */
    armorDetect(bool is_recorded);

/**
 * @brief 写入视频判断参数、灯条颜色参数、播放模式参数设置
 * 
 * @param is_recorded 写入视频判断参数，true为写入视频并保存至build文件夹
 * @param color 灯条颜色参数，将会影响b通道或r通道灰度值的增强
 * @param is_continuous 播放模式参数，true为连续播放模式，false为逐帧播放模式
 */
    armorDetect(bool is_recorded, int color, bool is_continuous);
    
    ~armorDetect();

    /**
     * @brief 装甲板区域、中心及中心预测点标定
     * 
     * @param video_path 视频路径
     * @return int 运行信息，0为运行成功，-1为运行错误
     */
    int Imageprocess(std::string video_path);
};
